"""信号分析基础类型定义.

包含信号方向、信号强度和信号结果的数据结构。
"""

from __future__ import annotations

from dataclasses import dataclass
from enum import Enum
from typing import Any, Dict


class SignalDirection(Enum):
    """信号方向枚举."""
    BULLISH = "看多"  # 看多信号
    BEARISH = "看空"  # 看空信号
    NEUTRAL = "中性"  # 中性信号


class SignalStrength(Enum):
    """信号强度枚举."""
    STRONG = "强烈"  # 强烈信号
    MODERATE = "中等"  # 中等信号
    WEAK = "轻微"  # 轻微信号


@dataclass
class SignalResult:
    """信号分析结果数据类.
    
    Attributes
    ----------
    direction : SignalDirection
        信号方向（看多/看空/中性）
    strength : SignalStrength
        信号强度（强烈/中等/轻微）
    confidence : float
        置信度（0-1之间的浮点数）
    value : Any
        指标当前值（可以是单个数值或字典）
    threshold_info : Dict[str, Any]
        阈值信息（用于说明判断依据）
    """
    direction: SignalDirection
    strength: SignalStrength
    confidence: float
    value: Any
    threshold_info: Dict[str, Any]

    def to_dict(self) -> Dict[str, Any]:
        """转换为字典格式."""
        return {
            "direction": self.direction.value,
            "strength": self.strength.value,
            "confidence": self.confidence,
            "value": self.value,
            "threshold_info": self.threshold_info,
        }

